home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 007 / scbench.arc / SCSW88.C < prev    next >
Text File  |  1980-01-01  |  1KB  |  72 lines

  1. /*
  2. ** 8088/8086 version
  3. ** Routine to get the time of day -- BYTE Small C
  4. ** MS-DOS version for 8088.
  5. ** tblock[] is assumed to be a 4-element int array.
  6. ** tblock[0]=hours
  7. ** tblock[1]=minutes
  8. ** tblock[2]=seconds
  9. ** tblcok[3]=hundredths of seconds
  10. */
  11. gtime(tblock) int tblock[];
  12. {
  13. #asm
  14.     MOV    AH,2CH    ;Function to get time
  15.     INT    21H    ;Do it
  16.     XOR    AX,AX    ;Clear high part
  17.     MOV    BP,SP
  18.     MOV    SI,2[BP] ;Get pointer to array
  19.     MOV    AL,CH
  20.     MOV    [SI],AX    ;Hours
  21.     MOV    AL,CL
  22.     MOV    2[SI],AX ;Minutes
  23.     MOV    AL,DH
  24.     MOV    4[SI],AX ;Seconds
  25.     MOV    AL,DL
  26.     MOV    6[SI],AX ;Hundredths
  27.     XOR    CX,CX    ;Clear CX
  28. #endasm
  29. }
  30.  
  31. /*
  32. ** 8088/8086 version
  33. ** calctim() - calculate time difference between time stored in
  34. ** tblock[] and current time.
  35. ** tblock[] is a 4-element array:
  36. ** tblock[0] = hours
  37. ** tblock[1] = minutes
  38. ** tblock[2] = seconds
  39. ** tblcok[3] = 100/ths of a second
  40. ** calctim() returns its results in tblock[]
  41. */
  42. calctim(tblock) int tblock[]; {
  43. #asm
  44.     MOV    AH,2CH    ;Get time
  45.     INT    21H
  46.     MOV    BP,SP
  47.     MOV    SI,2[BP] ;Pointer to tblock[]
  48.     MOV    AX,6[SI] ;Get 100/ths of a second
  49.     SUB    DL,AL
  50.     JNS    CAL1
  51.     ADD    DL,100
  52.     DEC    DH
  53. CAL1:    MOV    6[SI],DL
  54.     MOV    AX,4[SI] ;Get seconds
  55.     SUB    DH,AL
  56.     JNS    CAL2
  57.     ADD    DH,60
  58.     DEC    CL
  59. CAL2:    MOV    4[SI],DH
  60.     MOV    AX,2[SI] ;Get minutes
  61.     SUB    CL,AL
  62.     JNS    CAL3
  63.     ADD    CL,60
  64.     DEC    CH
  65. CAL3:    MOV    2[SI],CL
  66.     MOV    AX,[SI]  ;Get hours
  67.     SUB    CH,AL
  68.     MOV    [SI],CH
  69.     XOR    CX,CX
  70. #endasm
  71. }
  72.